Managing inventory data for components of a server system

ABSTRACT

Techniques are disclosed for managing inventory data for components of a server system. In one embodiment, a global management controller is provided, that is operatively connected to a plurality of local management controllers. Each local management controller is configured to manage a subset of the components of the server system. Each local management controller is also configured to generate, for each component, a checksum based on vital product data (VPD) of the component. Each local management controller is also configured to compute a composite checksum based on the checksums generated for the components in the subset. The global management controller is configured to maintain a global view of the VPD in the computer system, based on the checksums and/or composite checksums.

BACKGROUND

Although early computer architectures used standalone, single computers,often referenced as Personal Computers (PCs), more powerful moderncomputer systems often use multiple computers that are coupled togetherin a common chassis. An exemplary common chassis is known as a bladechassis, which includes multiple server blades that are coupled by acommon backbone within the blade chassis. Each server blade is apluggable board that includes at least one processor, on-board memory,and an Input/Output (I/O) interface. The multiple server blades areconfigured to communicate with one another and to share common resourcessuch as storage devices, monitors, input devices, etc. Further, one ormultiple blade chassis may make up a blade system, which is oftendedicated to a single enterprise and/or a particular function, such asprocessing loans, managing payroll, etc.

SUMMARY

Embodiments of the invention provide a computer-implemented method,computer program product and system for performing an operation thatincludes, from a first local management controller of a plurality oflocal management controllers operatively connected to a globalmanagement controller configured to manage a plurality of components,each component having associated vital product data (VPD), receiving:(i) VPD of a first component in the subset managed by the first localmanagement controller and (ii) a first checksum generated based on theVPD of the first component, where each local management controller isconfigured to manage a respective subset of the plurality of components.The operation also includes storing the VPD and the first checksum ofthe first component. The operation also includes receiving, from thefirst local management controller, an indication that the VPD haschanged, wherein the indication specifies a second checksum generatedbased on the changed VPD of the first component. The operation alsoincludes, responsive to the indication, determining whether the storedVPD is up-to-date by comparing the second checksum with the storedchecksum.

BRIEF DESCRIPTION OF THE DRAWINGS

So that the manner in which the above recited aspects are attained andcan be understood in detail, a more particular description ofembodiments of the invention, briefly summarized above, may be had byreference to the appended drawings.

It is to be noted, however, that the appended drawings illustrate onlytypical embodiments of this invention and are therefore not to beconsidered limiting of its scope, for the invention may admit to otherequally effective embodiments.

FIG. 1 is a block diagram of a computing environment having severalhosts and a management appliance with access to a server system,according to one embodiment of the invention.

FIG. 2 illustrates a logical view of the management appliance and theserver system, according to one embodiment of the invention.

FIG. 3 illustrates local inventory data maintained by a local managementcontroller, according to one embodiment of the invention.

FIG. 4 illustrates global inventory data maintained by a globalmanagement controller, according to one embodiment of the invention.

FIG. 5 is a flowchart depicting a method for maintaining the globalinventory data, according to one embodiment of the invention.

FIG. 6 is a sequence diagram illustrating an operation for generatingthe global inventory data, according to one embodiment of the invention.

FIG. 7 is a flowchart depicting a method for generating the globalinventory data, according to one embodiment of the invention.

FIG. 8 is a flowchart depicting a method for maintaining the globalinventory data, according to one embodiment of the invention.

FIG. 9 is a flowchart depicting a method for bringing the globalmanagement controller up-to-date, following a restart of the globalmanagement controller, according to one embodiment of the invention.

FIG. 10 is a flowchart depicting a method for updating the globalinventory data, according to one embodiment of the invention.

DETAILED DESCRIPTION

Embodiments of the invention provide techniques for managing inventorydata for components of a server system. The server system may includeone or more server cards operatively connected to a midplane. Eachserver card includes one or more computer processors and a memory. Forexample, each server card may be a server blade, also referred to as ablade server or blade. One embodiment of the invention provides anetwork appliance operatively connected to the server system. Thenetwork appliance includes a global management controller, and theserver system includes a plurality of local management controllers. Eachlocal management controller is configured to manage a respective subsetof the components of the server system. The subset of components managedby a local management controller may also be referred to as themanagement scope of the local management controller. The componentsinclude server components and enclosure components. Each component hasassociated vital product data (VPD). As used herein, the VPD of acomponent refers to any data characterizing the component, that thecomponent is configured to provide responsive to a request. Examples ofVPD include serial numbers, part numbers, model numbers, versionnumbers, component names, manufacturer names, universally uniqueidentifiers (UUIDs), etc.

In one embodiment, the global management controller communicates withthe local management controllers to provide a global view of VPD of allcomponents in the server system. The global management controller mayprovide the global view to one or more users and/or applications. Theglobal view may facilitate functions of a systems management applicationfor the server system. To this end, in some embodiments, the globalmanagement controller and/or the local management controllers store, ina local cache, a copy of VPD of managed components. Storing a local copyof VPD may reduce delays associated with retrieving the VPD responsiveto a request by an application and/or a user.

In one embodiment, each local management controller generates and/ormaintains local inventory data for the server system. The localinventory data includes the local copy of the VPD of each componentmanaged by the respective local management controller. The localinventory data also includes, for each component, a checksum generatedbased on the VPD of the respective component. Depending on theembodiment, the checksum may be generated based on all VPD of therespective component or based on only a predefined subset of the VPD,where the predefined subset is specified by a user. Upon a change in theVPD of a component, the local management controller managing thecomponent generates a new checksum based on the changed VPD. The localinventory data may also include a composite checksum that is generatedbased on checksums of all components managed by the local managementcontroller.

In one embodiment, the global management controller generates and/ormaintains global inventory data for the server system. The globalinventory data includes the local copy of the VPD for each component inthe server system and the checksum generated for the components in theserver system. The global inventory data also includes the compositechecksums generated by each local management controller in the serversystem. In one embodiment, the global management controller and thelocal management controllers are configured to use these checksums tokeep the global inventory data current, relative to the local inventorydata of each local management controller. For example, the globalmanagement controller may use the checksums and/or composite checksumsto determine whether the VPD for a component in the global inventorydata should be updated using VPD received from the local managementcontroller managing the component. In some instances, the checksumsand/or composite checksums may be used to prevent unchanged VPD frombeing requested by the global management controller and/or sent by thelocal management controller. Accordingly, the amount of network trafficand/or processing performed by the global management controller and thelocal management controllers may be reduced at least in some cases. Inparticular, the amount of network traffic may be reduced, relative to analternative embodiment in which only the VPD—and not the checksums—isused to keep the global inventory data up-to-date. For instance, in thealternative embodiment, the global management controller mayperiodically poll for VPD from each local management controller andupdate the global inventory data with any changed VPD. Further, thereduction in network traffic may be significant in particular cases,such as where the size of the VPD vastly exceeds the size of thechecksums and/or composite checksums, where the count of componentshaving VPD vastly exceeds the count of local management controllers,etc.

In one embodiment, the local inventory data and/or the global inventorydata are stored in persistent storage. At least in some cases, couplingthe use of checksums with storing inventory data in persistent storagemay reduce the amount of network traffic that occurs upon restarting theglobal management controller, relative to an alternative embodiment inwhich the global inventory data is lost upon each restart. In thealternative embodiment, the global management controller regenerates theglobal inventory data upon each restart. The global inventory data isregenerated using VPD for all components, received from the localmanagement controllers via the network.

In the following, reference is made to embodiments of the invention.However, it should be understood that the invention is not limited tospecific described embodiments. Instead, any combination of thefollowing features and elements, whether related to differentembodiments or not, is contemplated to implement and practice theinvention. Furthermore, although embodiments of the invention mayachieve advantages over other possible solutions and/or over the priorart, whether or not a particular advantage is achieved by a givenembodiment is not limiting of the invention. Thus, the followingaspects, features, embodiments and advantages are merely illustrativeand are not considered elements or limitations of the appended claimsexcept where explicitly recited in a claim(s). Likewise, reference to“the invention” shall not be construed as a generalization of anyinventive subject matter disclosed herein and shall not be considered tobe an element or limitation of the appended claims except whereexplicitly recited in a claim(s).

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality and operation of possible implementations ofsystems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

FIG. 1 is a block diagram of a computing environment 100 having severalhosts and a management appliance with access to a server system 102,according to one embodiment of the invention. Although only three hosts134 a,b,n are depicted for clarity, those skilled in the art willappreciate that additional hosts may have access to the server system102. The hosts 134 a,b,n and the management appliance 150 are connectedthrough a network fabric 132 to the server system 102. Depending on theembodiment, each host 134 a,b,n may act as a client that accessesfunctionality provided by the server system 102 and/or may providerespective server functionality external to the server system 102. Thenetwork fabric 132 may be a telecommunications network and/or a widearea network (WAN). In a particular embodiment, the network fabric 132is the Internet. The server system 102 includes a chassis that housesserver blades 104 a,b,n. The server blades 104 a,b,n are coupled to amidplane 123, which provides mechanical and logical connections (e.g.,data and control signal interchange) among the server blades 104 a,b,n.Although three server blades 104 a,b,n are depicted, those skilled inthe art will appreciate that additional server blades may be connectedto the midplane 123. Further, although embodiments are described hereinwith reference to blade systems, other form factors or physicalconfigurations (e.g., rack systems) are broadly contemplated.

Further, although embodiments are described herein with reference to theserver blades 104 a,b,n being coupled to the midplane 123, those skilledin the art will recognize that more generally, the server blades may becoupled to any printed circuit board (PCB) that serves as a backbone forthe chassis, such as a backplane, motherboard, etc. Further still,although embodiments are described herein with reference to the serversystem 102 having a single chassis, those skilled in the art willrecognize that in other embodiments, the server system 102 may includemultiple chassis. For example, in an alternative embodiment, the serversystem 102 may be a blade system that includes at least two bladechassis, each having a plurality of blades.

In one embodiment, the server system 102 further includes one or moremanagement modules 124. In the depicted embodiment, the server system102 includes a primary management module 124 a and a backup managementmodule 124 b. Each management module 124 is capable of managing multipleserver blades 104. During normal operation, one of the managementmodules 124 is operatively connected to the server blades 104 via alocal area network (LAN) 122, the midplane 123 and a BaseboardManagement Controllers (BMCs) 110 of each server blade 104 to form anin-band management pathway. In one embodiment, the network fabric 132serves as an extension to the LAN 122. The LAN 122 and BMC 110 arefurther discussed below.

In one embodiment, the midplane 123 is mounted in the middle of thechassis of the server system 102 and contains circuitry and sockets 112into which additional electronic devices or cards, including serverblades 104, may be inserted. The midplane 123 includes at least one busfor secure in-band internal communication via the BMCs 110 and betweenthe management modules 124 and the server blades 104 and/or amongst theserver blades 104 themselves.

In one embodiment, when a server blade 104 is inserted into a specificsocket 112, a physical address is established for the server blade 104.For example, assume that server blade 104 a is inserted into the socket112 a. In one embodiment, control logic 116 a detects presence of theserver blade 104 a in the socket 112 a. The control logic 116 a maycomport with the Electronics Industry Association (EIA) RS485 Standardfor data communication. In other embodiments, the control logic 116 amay be compliant with the Phillips' Inter-IC (Inter-Integrated Circuit,or I²C) standard or with an Ethernet network standard. The control logic116 a, operating in conjunction with the management module 124 a,assigns a physical address on a bus in the midplane 123 to the serverblade 104 a responsive to insertion of the server blade 104 a into thesocket 112 a. As shown, each server blade 104 is associated with arespective control logic 116 that is operatively connected to themidplane 123. In an alternative embodiment, multiple server blades 104may share a single control logic 116.

In one embodiment, each server blade 104 is assigned a unique InternetProtocol (IP) address on the midplane 123. That is, the midplane 123 maysupport intercommunication using IP addressing protocol, in which eachdevice that is operatively connected to the midplane 123 has an IPaddress assigned by logic (not shown) that is either within or outsidethe chassis of the server system 102. For example, a Dynamic HostConfiguration Protocol (DHCP) server may be used to assign an IP addressto the server blade 104 a. Communication with the server blade 104 athereafter occurs via a network interface controller (NIC) 114 aassociated with the server blade 104 a. The NIC 114 a may be any type ofnetwork communications device allowing the server blade 104 a tocommunicate with other server blades 104 b,n and/or computers via theLAN 122 and/or the network fabric 132.

In one embodiment, an integrated module 126 a is operatively connectedto the NIC 114 a. The integrated module 126 a may be used in pairs(e.g., with integrated module 126 b) to provide redundancy. As is known,Small Computer System Interface (SCSI) refers to a set of standards forphysically connecting and transferring data between computers andperipheral devices. In one embodiment, the integrated modules 126include switch modules 128, such as a Serial Attached SCSI (SAS) switchmodule. The switch modules 128 provide, for the server blades 104,connectivity to Ethernet, Fibre Channel over Ethernet (FCoE), SAS, etc.In one embodiment, each switch module 128 is a switch chip. Depending onthe embodiment, the integrated modules 126 may further include redundantarray of independent disks (RAID) controllers 130. Each RAID controller130 is interconnected to RAID devices, such as storage devices in a RAIDconfiguration. The RAID devices may be located within one or more of theserver blades 104. The RAID controllers 130 and the RAID devices maycollectively be viewed as a RAID subsystem of the server system 102.

In one embodiment, each storage device may be a persistent storagedevice. Further, each storage device may be a combination of fixedand/or removable storage devices, such as fixed disc drives, floppy discdrives, tape drives, removable memory cards, solid-state drives oroptical storage. The memory 108 and the storage device may be part ofone virtual address space spanning multiple primary and secondarystorage devices.

In one embodiment, each server blade 104 may have at least one centralprocessing unit (CPU) 106 and a memory 108. The CPU 106 is included tobe representative of a single CPU, multiple CPUs, a single CPU havingmultiple processing cores, and the like. Similarly, the memory 108 maybe a random access memory. While the memory 108 is shown as a singleidentity, it should be understood that the memory 108 may comprise aplurality of modules, and that the memory 108 may exist at multiplelevels, from high speed registers and caches to lower speed but largerDRAM chips. The memory 108 may be a flash read-only memory (“flash ROM”or “flash memory”) that can be erased and reprogrammed in units ofmemory referred to as “blocks.” The memory 108 may also includenon-volatile Electrically Erasable Programmable Read Only Memory(EEPROM) that is similar to flash memory, except that EEPROM is erasedand rewritten at a byte level and is usually smaller in capacity. Eachserver blade 104 may be oriented as a processor blade or a storageblade. A processor blade includes one or more processing devices, whilea storage blade includes a number of integrated storage devices such asdisk drives.

In one embodiment, when the server blade 104 is shipped from amanufacturer, the memory 108 may be pre-burned with firmware, includinga basic input/output system (BIOS) and software for monitoring theserver blade 104. The monitoring may include controlling storagedevices, monitoring and controlling voltages throughout the system,determining the power-on status of the server blade 104, requestingaccess to a shared keyboard, video, mouse, compact disc read-only memory(CD-ROM) and/or floppy disk drives, monitoring the operating system (OS)running on the server blade 104, etc. Examples of operating systemsinclude UNIX, versions of the Microsoft Windows® operating system, anddistributions of the Linux® operating system. More generally, anyoperating system supporting the functions disclosed herein may be used.

In one embodiment, the management modules 124 are capable of detectingthe presence, quantity, type and revision level of each server blade104, power module 118, and midplane 123 in the system. The managementmodules 124 may also directly control the operation of each server blade104 and the power module 118. The management modules 124 may alsodirectly control the operation of cooling fans 120 and other componentsin the chassis of the server system 102. Directly controlling theoperation entails controlling the operation without using the BIOS inthe server blades 104. In an alternative embodiment, the managementmodules 124 may use the BIOS to indirectly control the operation of thecooling fans 120 and the other components in the chassis of the serversystem 102.

In one embodiment, each server blade 104 includes a baseboard managementcontroller (BMC) 110 that provides local supervisory control of theserver blade 104 to which the BMC 110 is associated. Each BMC 110 isconfigured to communicate with a management module 124 by either usingcommunication path of the LAN 122 (i.e., via an in-band network) oralternatively by using switch modules 128 and NICs 114 (i.e., via anout-of-band network). The management modules 124 may utilize a varietyof communications paths in the LAN 122, such as RS485 path, a LAN path,and an I²C path, to communicate with each server blade 104.

In one embodiment, the LAN 240 is an in-band network also comportingwith the Electronics Industry Association (EIA) RS485 Standard for datacommunication. The management modules 124—e.g., either the primarymanagement module 124 a or the backup management module 124 b if theprimary management module 124 a is down—communicate via the LAN 122 withthe BMC 110, which includes logic for coordinating communication withthe server blades 104 via the sockets 112.

In one embodiment, the LAN 122 may be configured to allow communicationsbetween the server blades 104 and the management modules 124 relating tothe remote BIOS settings and BIOS management. The server blades 104 mayuse BMCs 110 as proxies to communicate with the management modules 124through the RS485 protocol. Similarly, the management modules may useBMCs 110 as proxies to communicate with the server blades 104 throughthe RS485 protocol. In an alternative embodiment, an RS485 connectionmay be separately made between each server blade 104 and the managementmodules 124. Additionally, other communications protocols and paths maybe utilized over the switch modules 128, such as I²C, TCP/IP, Ethernet,FCoE, etc.

Depending on the embodiment, the server system 102 may also beoperatively connected to an input device and/or an output device. Theinput device may be any device for providing input to the server system102. For example, a keyboard and/or mouse may be used. The output devicemay be any device for providing output to a user of the server system102. For example, the output device may be any conventional displayscreen or set of speakers. Further, the input device and output devicemay be combined. For example, a display screen with an integratedtouch-screen may be used.

In one embodiment, the management appliance 150 is configured to providea global view of VPD to one or more users and/or applications. To thisend, the management appliance 150 communicates with one or more localmanagement controllers via the network fabric 132 and/or the LAN 122.Depending on the embodiment, the local management controllers mayinclude the management modules 124 and the BMCs 110. The operations ofthe management appliance 150 and the local management controllers arefurther described below in conjunction with FIGS. 2-10.

FIG. 2 illustrates a logical view 200 of the management appliance 150and the server system 102 of FIG. 1, according to one embodiment of theinvention. As shown, the management appliance 150 includes a globalmanagement controller 250 configured to maintain global inventory data252. The server system 102 includes multiple blade enclosures 202, eachblade enclosure 202 housing server components 204 of one or more blades.Each blade enclosure 202 further houses one or more chassis components206. The server system 102 also includes a plurality of local managementcontrollers 260, each configured to manage a respective subset ofcomponents. Further, the subsets may be disjoint—i.e., each componenthas no more than one associated local management controller 260. Eachsubset of components may be predefined and tailored to suit the needs ofa particular case.

In one embodiment, the server system 102 includes a local managementcontroller 260 ₂ for each blade enclosure and for each blade server. Forexample, the local management controller 260 ₂ may be a chassismanagement module configured to manage the chassis components 206 of theblade enclosure 202. The chassis components 206 include the midplane123, I/O modules 216, media devices 218, fans 120, power supplies 220,and front/rear panels 222 of the blade enclosure 202. As describedabove, the server system 102 may also include a local managementcontroller 260 ₁ for each blade server. For example, the localmanagement controller 260 ₁ may be a service processor configured tomanage the server components 204 of the respective blade server. Theserver components 204 include the processors 106, memory 108, storage208, system board 210, daughter cards 212 and expansions 214. Each localmanagement controller 260 communicates with managed components tomaintain local inventory data 262. The global management controller 250communicates with the local management controllers 260 to maintainglobal inventory data 252.

FIG. 3 illustrates the local inventory data 262 of FIG. 2, according toone embodiment of the invention. As shown, the local inventory data 262₁ that is maintained by the local management controller 260 ₁ includesfields representing component name 302 ₁, part number 304 ₁ and serialnumber 306 ₁, respectively. For example, the VPD of a first componentmanaged by the local management controller 260 ₁ is given by a componentname 302 ₁ of “Processor 1,” a part number 304 ₁ of “43Y4841,” and aserial number 306 ₁ of “P0124378.” In one embodiment, each localmanagement controller 260 is configured to retrieve the VPD from eachcomponent managed by the local management controller 260. The VPD may beretrieved according protocols and/or techniques specific to eachcomponent. For example, in the case of dual in-line memory module (DIMM)memory, the local management controller 260 ₁ may retrieve VPD from anElectrically Erasable Programmable Read-Only Memory (EEPROM) usingserial presence detect (SPD). Further, at least some of the VPD may beconverted into a predefined format of the local inventory data 262.

In one embodiment, the local management controller 260 ₁ is alsoconfigured to compute, for each component, a checksum 308 ₁ based on (i)a predefined subset of fields associated with the component and,optionally, one or more predefined delimiters between the fields. Asused herein, a checksum refers to a value of predefined size, that iscomputed from data and that may be used to detect changes in the data.Depending on the embodiment, the predefined subset of fields may includeall fields associated with the component—e.g., the component name 302 ₁,the part number 304 ₁ and the serial number 306 ₁. Examples of checksumalgorithms include Fletcher's checksum, Adler-32 and cyclic redundancychecks (CRCs). Using a CRC algorithm to compute the checksums and/orcomposite checksums may reduce collision probabilities at least in somecases. A collision occurs when an identical checksum is generated fromtwo distinct input values, respectively. At least in some embodiments,the odds of a collision under a CRC algorithm may be less than one infour billion.

In some embodiments, each field has an associated propertycharacterizing whether the field is modifiable, and the predefinedsubset of fields only includes modifiable fields. For example, assumethat the part number 304 ₁ and the serial number 306 ₁ are modifiablebut the component name 302 ₁ is not modifiable. In such a case, thechecksum could be generated from only the modifiable fields—i.e., thepart number 304 ₁ and the serial number 306 ₁ in this particularexample. As used herein, a modifiable field may also be referred to as amutable field, and a field that is not modifiable may also be referredto as an immutable field.

For example, a 32-bit checksum given by the hexadecimal value of“95bb2f4b” may be generated based on an input value of“43Y4841\nP0124378,” where “\n” represents a delimiter value of thenewline character. In general, any predefined string of character(s) maybe used as the delimiter value. The input value is obtained byconcatenating the part number of “43Y4841” with the delimiter and theserial number of “P0124378.” The local inventory data 262 ₁ alsoincludes a composite checksum 310 ₁ that is generated by the localmanagement controller 260 ₁ based on the checksums 308 ₁ of allcomponents managed by the local management controller 260 ₁. Forexample, a 32-bit checksum given by the hexadecimal value of “6ddcdfcf”may be computed based on an input value of obtained from concatenatingthe five checksum values “95bb2f4b,” “056ba0d0,” “0dbbc450,” “d1cdc043”and “4e384562,” separated by the delimiter.

In an alternative embodiment, the component name 302 ₁ is modifiable,and each component is associated with a “component identifier” fieldthat is not modifiable. In the alternative embodiment, the checksum maybe generated from the component name 302 ₁, the part number 304 ₁ andthe serial number 306 ₁. In one embodiment, to the extent that thechecksums are used in detecting VPD changes, generating the checksumonly from the modifiable fields may improve performance of the localmanagement controllers and/or may reduce the probably of checksumcollisions at least in some cases.

Similarly, the local inventory data 262 ₂ maintained by the localmanagement controller 260 ₂ includes fields representing component name302 ₂, part number 304 ₂, and serial number 306 ₂, respectively. Forexample, the VPD of a first component managed by the local managementcontroller 260 ₂ is given by a component name 302 ₂ of “Power supply,” apart number 304 ₂ of “6K14T306” and a serial number 306 ₂ of “W4023319.”

In one embodiment, the local management controller 260 ₂ is configuredto compute, for each component, a checksum 308 ₂ based on a predefinedsubset of fields associated with the component. For example, a 32-bitchecksum given by the hexadecimal value of “f146ae40” may be generatedbased on an input value of “6K14T306\nW4023319.” The input value isobtained by concatenating the part number of “6K14T306” with thedelimiter “\n” and the serial number of “W4023319.” The local inventorydata 262 ₂ also includes a composite checksum 310 ₂ that is generated bythe local management controller 260 ₂ based on the checksums 308 ₂ ofall components managed by the local management controller 260 ₂. Forexample, a 32-bit checksum given by the hexadecimal value of “7367df85”may be computed based on an input value of obtained from concatenatingthe three checksum values “f146ae40,” “d50f9744” and “67f50c9f,”separated by the delimiter.

In one embodiment, one or more changes may occur to the VPD of acomponent in the server system 102. For instance, the serial number of acomponent may be updated by a user and/or an application, during arepair procedure involving the component. In one embodiment, each localmanagement controller 260 is configured to poll components within themanagement scope of the respective local management controller 260. Thefrequency of polling may be configured by a user and tailored to suitthe needs of a particular case. The local management controller may polla component to retrieve VPD associated with the component.

In one embodiment, the retrieved VPD may be compared to VPD previouslystored in the local inventory data 262, for the component. If theretrieved VPD is different from the stored VPD, then the localmanagement controller 260 updates the local inventory data 262 using theretrieved VPD. In updating the local inventory data 262, the localmanagement controller 260 also computes a new checksum based on theretrieved VPD. The local management controller 260 may also compute anew composite checksum, based at least in part on the new checksum. Thelocal management controller 260 may then alert the global managementcontroller 250 that a VPD change is detected. To this end, the localmanagement controller 260 may send a message to the global managementcontroller 250, where the message includes only the new checksum for thecomponent and a unique identifier for the component. In other words, inthis particular example, the message does not include any other VPDassociated with the component. Additionally or alternatively, themessage may include the new composite checksum 311. The message triggersan operation in which the global management controller 250 updates theglobal inventory data 252.

For instance, assume that the serial number for the component “Processor1” is changed from “P0124378” to “P0126550,” e.g., as part of a repairprocedure involving the component. When the local management controller260 ₁ subsequently polls the component for VPD, the local managementcontroller 260 ₁ determines that the serial number has changed. Thelocal management controller 260 ₁ may then update the local inventorydata 262 ₁ with the new serial number 307. The local managementcontroller 260 ₁ may also update the local inventory data 262 ₁ with anew checksum 309 computed at least in part based on the new serialnumber 307. The local management controller 260 ₁ may also update thelocal inventory data 262 ₁ with a new composite checksum 311 computed atleast in part based on the new checksum 309. In this particular example,the new checksum 309 and the new composite checksum 311 are given by thehexadecimal values of “e90b1c75” and “665a9707,” respectively.

In one embodiment, the local management controller 260 ₁ may also send amessage containing the component name of “Processor 1” and the newchecksum of “e90b1c75” to the global management controller 250 as anotification of the VPD change. In some embodiments, the message mayalso contain additional fields identifying the local managementcontroller 260 ₁, blade, and/or enclosure, etc. As described above, themessage triggers the process in which the global management controller250 updates the global inventory data 252. The process is furtherdescribed below in conjunction with FIGS. 5-8.

In one embodiment, apart from updating the global inventory data 252 toreflect VPD changes, the global management controller 250 may alsoupdate the global inventory data 252 to reflect entities being added toand/or removed from the server system 102. The entities may includecomponents, local management controllers 260, servers, enclosures, etc.For example, upon polling a component or upon an occurrence of aninterrupt, a local management controller 260 may discover that thecomponent was removed from the server system 102. The local managementcontroller 260 may remove the VPD (of the removed component) from thelocal inventory data 262 or, alternatively, flag the VPD as beingdeleted. The local management controller 260 may also alert the globalmanagement controller 250 to remove the VPD from the global inventorydata 252. Additionally or alternatively, the local management controller260 may generate a new composite checksum based on the checksums of theremaining components and provide the new composite checksum to theglobal management controller 250. The global management controller 250may then store the new composite checksum in the global inventory data252.

As a further example, a local management controller 260 may discoverthat a component was added to the server system 102 by polling acomponent when an interrupt occurs. The local management controller 260may retrieve the VPD (of the removed component) and store the VPD to thelocal inventory data 262. The local management controller 260 may alsoalert the global management controller 250 to add the VPD to the globalinventory data 252. Additionally or alternatively, the local managementcontroller 260 may generate a new composite checksum based on thechecksums of all managed components (including the newly addedcomponent) and provide the new composite checksum to the globalmanagement controller 250. The global management controller 250 may thenstore the new composite checksum in the global inventory data 252.

In some embodiments, if the global management controller 250 receivesthe message that includes the new composite checksum 311 and determinesthat the new composite checksum 311 matches a previous compositechecksum for the local management controller 260, the global managementcontroller 250 may not necessarily perform the operation for updatingthe global inventory data 252, despite the occurrence of the VPD change.Such situations may occur when an identical composite checksum isgenerated from two distinct sets of checksums. To trigger the operationfor updating the global inventory data 252 in such situations, the localmanagement controller 250 may be configured to send the message to theglobal management controller 250 upon a VPD change, even if the localmanagement controller 250 determine that the new composite checksum 311matches a previous composite checksum stored by the local managementcontroller 250. Further, the global management controller 250 may beconfigured to perform the operation for updating the global inventorydata upon receiving the message from the local management controller,regardless of whether the new composite checksum in the message matchesthe previous composite checksum stored by the global managementcontroller 250. Further, at least in some embodiments, the operations ofsending and/or receiving messages is independent of any transmissionmediums and/or transmission protocols being used to send and/or receivethe messages.

Although the above examples are described with reference to the localmanagement controller 260 alerting the global management controller 250of a VPD change by sending a new checksum, other embodiments are broadlycontemplated. For example, in one embodiment, the local managementcontroller 260 alerts the global management controller 250 of a VPDchange by sending the changed VPD, rather than the new checksum. Inanother embodiment, the local management controller 260 alerts theglobal management controller 250 of a VPD change by first sending a newcomposite checksum associated with the local management controller 260.The global management controller 250 then retrieves one or morechecksums from the local management controller 260 to identify thecomponent which VPD has changed. The global management controller 250then retrieves the changed VPD from the identified component.

FIG. 4 illustrates the global inventory data 252 of FIG. 2, according toone embodiment of the invention. As shown, the global inventory data 252that is maintained by the global management controller 250 includesfields representing component name 302 ₃, part number 304 ₃ and serialnumber 306 ₃, respectively. For example, the VPD of a first componentmanaged by the global management controller 250 is given by a componentname 302 ₃ of “Processor 1,” a part number 304 ₃ of “43Y4841” and aserial number 306 ₃ of “P0124378.” The global inventory data 252 alsoincludes a checksum 308 ₃ for each component, where the checksum 308 ₃is generated by the local management controller 260 for the respectivecomponent. The global inventory data 252 may include additional fieldsidentifying the enclosure 402 and/or server/chassis 404 associated witheach component. Additionally or alternatively, the global inventory data252 may include a field identifying a local management controller 260configured to manage each component.

In one embodiment, the global inventory data 252 also includes, for eachlocal management controller 260, a name 406 of the respective localmanagement controller 260 and a composite checksum 410 generated by therespective local management controller 260. In general, any field(s)uniquely identifying the local management controller 260 may be used inlieu of the name 406. For example, a numerical management controlleridentifier may be used to associate a composite checksum 410 with alocal management controller 260. Alternatively, a blade enclosureidentifier and/or server/chassis identifier may be used.

As described above, upon detecting a change in the VPD of a component,the local management controller 260 sends a new checksum 309 and/or newcomposite checksum 311 to the global management controller 250. Themessage triggers a process in which the global management controller 250updates the global inventory data 252 with the new checksum 309, the newcomposite checksum 311 and/or any changed VPD, such as the new serialnumber 307.

FIG. 5 is a flowchart depicting a method 500 for maintaining the globalinventory data 252, according to one embodiment of the invention. Thesteps of the method 500 may be performed by the global managementcontroller 250, which is configured to manage VPD associated with aplurality of components of the server system 102 of FIG. 1. The globalmanagement controller 250 is connected to a plurality of localmanagement controllers 260, each configured to manage a respectivesubset of the plurality of components of the server system 102. Asshown, the method 500 begins at step 510, where the global managementcontroller 250 receives VPD of a first component in the subset managedby a first local management controller 260 ₁. The global managementcontroller 250 also receives a first checksum generated by the firstlocal management controller 260 ₁ based on the VPD of the firstcomponent. For example, the global management controller 250 may receivethe serial number 306 ₁ and the checksum 308 ₁ of FIG. 3.

At step 520, the global management controller 250 stores the VPD and thefirst checksum in the global inventory data 252. At step 530, the globalmanagement controller 250 receives, from the first local managementcontroller 260 ₁, an indication that the VPD has changed, where theindication specifies a second checksum generated based on the changedVPD of the first component. For example, the global managementcontroller 250 receives the new checksum 309 of FIG. 3. At step 540, theglobal management controller 250 determines whether the stored VPD iscurrent by comparing the second checksum with the stored checksum. Forexample, the global management controller 250 compares the new checksum309 with the stored checksum 308 ₃ of FIG. 4. After the step 540, themethod 500 terminates.

FIG. 6 is a sequence diagram illustrating an operation 600 forgenerating the global inventory data 252 of FIG. 2, according to oneembodiment of the invention. As shown, the operation begins at step 610,where the global management controller 250 sends a discovery request toa local management controller 260 in the server system 102. At step 620,the local management controller 260 sends a discovery response to theglobal management controller 250. Receipt of the discovery responseallows the global management controller 250 to identify the localmanagement controller 260 over the network. The request may and/orresponse may be composed according to a predefined protocol, such asService Location Protocol (SLP). SLP refers to a service discoveryprotocol configured to allow computers to find services in a network,without requiring prior configuration of the computers and/or services.

At step 630, the global management controller 250 requests a compositechecksum from the local management controller 260. At step 640, thelocal management controller 260 sends the composite checksum to theglobal management controller 250. For example, the local managementcontroller 260 may send the composite checksum 310 ₁ of FIG. 3.Alternatively, the local management controller 260 may indicate that thecomposite checksum is not yet available, in which case the globalmanagement controller 250 to repeat the step 630 after a predeterminedtime period has elapsed. At step 650, the global management controller250 requests VPD and a checksum for each component managed by the localmanagement controller 260. At step 660, the local management controller260 provides the VPD and the checksum for each component managed by thelocal management controller 260. For example, the local managementcontroller 260 may provide the part number 304 ₁, serial number 306 ₁and the checksum 308 ₁ of FIG. 3.

At step 670, the global management controller 250 re-requests acomposite checksum from the local management controller 260. At step680, the local management controller 260 sends the composite checksum tothe global management controller 250. If the composite checksum at step680 matches the composite checksum at step 660, then the VPD and/orchecksums received by the global management controller 250 are current,relative to those stored by the local management controller 260.Accordingly, the global management controller 250 may return to the step610 to identify a next local management controller in the server system102. The global management controller 250 may repeat the operation 600for each identified local management controllers.

Alternatively, if the composite checksum at step 680 does not match thecomposite checksum at step 660, then the VPD and/or checksums receivedby the global management controller 250 may be stale, relative to thosestored by the local management controller 260. Accordingly, the globalmanagement controller 250 may repeat the steps 650-680 until thecomposite checksums match. Each VPD, checksum, and/or composite checksumreceived by the global management controller 250 is stored as part ofthe global inventory data 252. The global inventory data 252 may bestored in a persistent storage associated with the global managementcontroller 250. Once the operation 600 is performed for all localmanagement controllers 260 identified by the global managementcontroller 250, then the global management controller 250 has completedgenerating the global inventory data 252.

FIG. 7 is a flowchart depicting a method 700 for generating the globalinventory data 252 of FIG. 2, according to one embodiment of theinvention. As shown, the method begins at step 710, where the globalmanagement controller 250 identifies the local management controllers260 in the server system 102. At step 720, the global managementcontroller 250 enters a first loop to process each identified localmanagement controller 260. At step 730, the global management controller250 enters a second loop to process each component managed by therespective local management controller 260. In an alternativeembodiment, the respective local management controller 260 enters thesecond loop to provide VPD for each component managed by the respectivelocal management controller 260. At step 740, the global managementcontroller 250 receives and stores VPD and a checksum for the respectivecomponent. The checksum is generated by the respective local managementcontroller 260, based on the VPD for the respective component.

If more components remain that are managed by the respective localmanagement controller 260 (step 750), then the method 700 returns to thestep 730 to process a next component managed by the respective localmanagement controller 260. Otherwise, the method 700 proceeds to step760, where the global management controller 250 receives and stores acomposite checksum from the respective local management controller 260.The composite checksum is generated by the respective local managementcontroller 260, based on VPD of all components managed by the respectivelocal management controller 260. The global management controller 250may store the received VPD, checksums and/or composite checksums as partof the global inventory data 252. If more local management controllers260 remain to be processed (step 770), then the method 700 returns tothe step 720 to process a next local management controller 260.Otherwise, generation of the global inventory data 252 is complete, andthe method 700 terminates.

FIG. 8 is a flowchart depicting a method 800 for maintaining the globalinventory data 252 of FIG. 2, according to one embodiment of theinvention. As shown, the method 800 begins at step 810, where the globalmanagement controller 250 receives, from a local management controller260, a checksum for a component managed by the local managementcontroller 260. For example, the global management controller 250 mayreceive the new checksum 309 of FIG. 4. At step 820, the globalmanagement controller 250 determines whether a change has occurred inthe VPD of the component, based on the received checksum and the storedchecksum for the component. For example, the global managementcontroller 250 may determine that the serial number 306 ₃ for “Processor1” has changed, because the new checksum 309 for “Processor 1” does notmatch the stored checksum 308 ₃ for “Processor 1.”

If the global management controller 250 determines that a VPD change hasoccurred (step 830), the global management controller 250 stores thereceived checksum and retrieves and stores the changed VPD of thecomponent (step 840). For example, the global management controller 250updates the global inventory data 252 to include the new checksum 309and the new serial number 307. The global management controller 250 mayalso retrieve and store the new composite checksum 311 in the globalinventory data 252. At least in some embodiments, the step 840 is notperformed unless the global management controller 250 determined that aVPD change has occurred. After the step 840, the method 800 terminates.

FIG. 9 is a flowchart depicting a method 900 for bringing the globalmanagement controller up-to-date, following a restart of the globalmanagement controller, according to one embodiment of the invention. Asshown, the method 900 begins at step 910, where the global managementcontroller 250 is restarted. At step 920, subsequent to the globalmanagement controller 250 being restarted, the method 900 enters a loopto process each local management controller 260 previously identified bythe global management controller 250. At step 930, the global managementcontroller 250 receives a composite checksum from the respective localmanagement controller 260. At step 940, the global management controller250 determines whether a change has occurred in the VPD of any componentmanaged by the respective local management controller 260, based on thereceived composite checksum and the stored composite checksum for therespective local management controller 260.

In one embodiment, matching composite checksums may indicate an absenceof changes to the VPD of any component managed by the respective localmanagement controller 260. Non-matching composite checksums may indicatethat a VPD change has occurred for at least one component managed by therespective local management controller 260. If a VPD change has occurred(step 950), then the global management controller 250 updates the globalinventory data 252 (step 960). The step 960 is further described belowin conjunction with FIG. 10. At least in some embodiments, the step 960is not performed unless a VPD change has occurred.

If additional local management controllers 260 remain to be processed(step 970), then the method 900 returns to the step 920 to process anext local management controller 260. Otherwise, the global managementcontroller 250 has brought the global inventory data 252 fullyup-to-date, relative to the identified local management controllers 260,and the method 900 terminates. In some embodiments, if there remainlocal management controllers 260 not previously identified by the globalmanagement controller 250, then the global management controller 250 mayadditionally perform the steps of the method 700 to update the globalinventory data 252 to account for each such local management controller260. Accordingly, the global inventory data 252 may be broughtup-to-date relative to all local management controllers 260 in theserver system 102, subsequent to a restart of the global managementcontroller 250. Further, the global inventory data 252 may be broughtup-to-date while minimizing or reducing the amount of VPD, checksumsand/or composite checksums re-requested by the global managementcontroller 250, relative to other embodiments in which persistentstorage and/or checksums are not used. Accordingly, the global inventorydata 252 may be brought up-to-date more efficiently at least in somecases.

FIG. 10 is a flowchart depicting a method 1000 for updating the globalinventory data 252 of FIG. 2, according to one embodiment of theinvention. The method 1000 corresponds to the step 960 of FIG. 9. Asshown, the method 1000 begins at step 1010, where the global managementcontroller 250 enters a loop to process each component of the localmanagement controller 260. At step 1020, the global managementcontroller 250 receives a checksum for the respective component. At step1030, the global management controller 250 determines whether a changehas occurred in the VPD of the respective component, based on thereceived checksum and the stored checksum of the respective component.If a VPD change has occurred (step 1040), the global managementcontroller 250 stores the received checksum and/or retrieves and storesthe changed VPD of the respective component. If additional componentsremain to be processed (step 1060), then the method returns to the step1010 to process a next component managed by the respective localmanagement controller 260. Otherwise, the global inventory data 252 hasbeen brought fully up-to-date relative to the respective localmanagement controller 260, and the method 1000 terminates.

In an alternative embodiment, instead of determining whether additionalcomponents remain to be processed at step 1060, the global managementcontroller 250 may determine whether a composite checksum computed bythe global management controller 250 for the local management controller260 matches the received composite checksum from step 930 of FIG. 9. Ifthe composite checksums match, then no further components need to beevaluated for the local management controller 260. In doing so, theglobal management controller 250 may bring the global inventory data 252up-to-date more efficiently at least in some cases.

For example, referring again to FIG. 4, assume that the globalmanagement controller 250 updates the global inventory data 252 toinclude the new serial number 307 and the new checksum 309 for“Processor 1.” Assume further that no other VPD change has occurred inthe components managed by the local management controller 260 ₁. Withoutcomputing a checksum for the local management controller 260 ₁, theglobal management controller 250 would proceed to verify that thechecksums 412 of the remaining components are up-to-date. On the otherhand, by computing a composite checksum for the local managementcontroller 260 ₁, the global management controller 250 may avoidunnecessarily verifying the checksums 412 of the remaining components,upon determining that the computed composite checksum matches thereceived composite checksum 311. The composite checksum for the localmanagement controller 260 ₁ is computed based on the VPD of componentsmanaged by the local management controller 260 ₁, where the VPD isretrieved from the global inventory data 252. Any processing overheadincurred by the global management controller 250 in generating thecomposite checksums may offset by not having to incur the processingand/or network costs in evaluating the checksums 412 of the remainingcomponents, resulting in a net performance gain at least in some cases.

In some embodiments, the global management controller 250 is alsoconfigured to interoperate with one or more local management controllersthat do not support checksums and/or composite checksums. For example,upon determining that a local management controller does not supportchecksums, the global management controller 250 polls the localmanagement controller according to a predefined frequency, to retrieveVPD from one or more components managed by the local managementcontroller. For instance, referring again to FIG. 6, the globalmanagement controller 250 may determine that the local managementcontroller does not support checksums, upon not having received anyresponse from the local management controller within a predeterminedtime period following the request for the composite checksum (step 630).Further, upon a restart of the global management controller 250, theglobal management controller 250 retrieves the VPD of each componentmanaged by the local management controller and verifies that the storedVPD in the global inventory data 252 is current, relative to theretrieved VPD.

Advantageously, embodiments of the invention provide techniques formanaging inventory data for components of a server system. Oneembodiment provides global management controller operatively connectedto a plurality of local management controllers. Each local managementcontroller is configured to manage a respective subset of the componentsof the server system. The global management controller is configured tomanage VPD associated with the components of the server system. Eachlocal management controller is further configured to generate a checksumfor each component managed by the respective local managementcontroller, based on the VPD associated with the respective component.Each local management controller is further configured to compute acomposite checksum based on the checksums generated for the componentsmanaged by the respective local management controller.

In one embodiment, the global management controller may use thechecksums and/or composite checksums to maintain a global view of theVPD in the server system, both during normal operation of the globalmanagement controller and/or subsequent to a restart of the globalmanagement controller. Accordingly, the global view may be maintainedmore conveniently and/or efficiently at least in some cases. Forexample, the checksums and/or composite checksums may be used to preventunchanged VPD from being requested by the global management controllerand/or sent by the local management controller.

While the foregoing is directed to embodiments of the present invention,other and further embodiments of the invention may be devised withoutdeparting from the basic scope thereof, and the scope thereof isdetermined by the claims that follow.

1. A system, comprising: a global management controller configured toperform an operation for managing vital product data (VPD) associatedwith a plurality of components, each component configured to provide theassociated VPD responsive to a request; and a plurality of localmanagement controllers operatively connected to the global managementcontroller, each local management controller configured to manage arespective subset of the plurality of components; wherein the operationcomprises: receiving, from a first local management controller of theplurality of local management controllers: (i) VPD of a first componentin the subset managed by the first local management controller and (ii)a first checksum generated based on the VPD of the first component;storing the VPD and the first checksum of the first component;receiving, from the first local management controller, an indicationthat the VPD has changed, wherein the indication specifies a secondchecksum generated based on the changed VPD of the first component; andresponsive to the indication, determining whether the stored VPD isup-to-date by comparing the second checksum with the stored checksum. 2.The system of claim 1, wherein the operation further comprises, upondetermining that the stored VPD is not up-to-date: retrieving, from thefirst local management controller, the changed VPD of the firstcomponent, responsive to the indication; and updating the stored VPD ofthe first component using the changed VPD.
 3. The system of claim 1,wherein the global management controller stores VPD associated with asubset managed by a second local management controller, and wherein theoperation further comprises: receiving a first composite checksum fromthe second local management controller, wherein the first compositechecksum is generated based on a plurality of checksums, each checksumbeing generated based on the VPD associated with a respective componentof the subset managed by the second local management controller;subsequent to restarting the system, receiving a second compositechecksum from the second local management controller; and determiningwhether the stored VPD associated with the subset is up-to-date bycomparing the stored composite checksum with the second compositechecksum.
 4. The system of claim 3, wherein the operation furthercomprises, upon determining that the stored VPD associated with thesubset is not up-to-date: identifying at least one component in thesubset managed by the second local management controller for which VPDstored by the global management controller is not up-to-date; andupdating the stored VPD of the identified component using VPD retrievedfrom the second local management controller.
 5. The system of claim 4,wherein the at least one component is identified by comparing a storedchecksum of the at least one component with a subsequently retrievedchecksum of the at least one component.
 6. The system of claim 1,wherein each component is uniquely identifiable by an associatedidentifier, wherein each identifier is immutable, and wherein eachchecksum is generated via a cyclic redundancy check (CRC) algorithm. 7.The system of claim 1, wherein the vital product data comprises at leastone of a serial number, a part number, a version number, and auniversally unique identifier (UUID), wherein the global managementcontroller comprises a management appliance, wherein the plurality oflocal management controllers includes at least a chassis managementmodule and a service processor, wherein the chassis management module isconfigured to manage a first subset of the plurality of components, thefirst subset including at least one of a midplane, a fan, aninput/output (I/O) module, a power supply, a front panel, a rear panel,and a media device, wherein the service processor is configured tomanage a second subset of the plurality of components, the second subsetincluding at least one of a processor, a memory, a storage device, and adaughter card.
 8. A management controller configured to manage vitalproduct data (VPD) associated with a plurality of components, themanagement controller comprising: a computer processor; and a memorystoring management firmware which, when executed on the computerprocessor, performs an operation comprising: receiving, from a firstlocal management controller of a plurality of local managementcontrollers operatively connected to the management controller: (i) VPDof a first component in the subset managed by the first local managementcontroller and (ii) a first checksum generated based on the VPD of thefirst component, wherein each local management controller is configuredto manage a respective subset of the plurality of components; storingthe VPD and the first checksum of the first component; receiving, fromthe first local management controller, an indication that the VPD haschanged, wherein the indication specifies a second checksum generatedbased on the changed VPD of the first component; and responsive to theindication, determining whether the stored VPD is up-to-date bycomparing the second checksum with the stored checksum.
 9. Themanagement controller of claim 8, wherein the operation furthercomprises, upon determining that the stored VPD is not up-to-date:retrieving, from the first local management controller, the changed VPDof the first component, responsive to the indication; and updating thestored VPD of the first component using the changed VPD.
 10. Themanagement controller of claim 8, wherein the management controllerstores VPD associated with a subset managed by a second local managementcontroller, and wherein the operation further comprises: receiving afirst composite checksum from the second local management controller,wherein the first composite checksum is generated based on a pluralityof checksums, each checksum generated based on the VPD associated with arespective component of the subset managed by the second localmanagement controller; subsequent to restarting the system, receiving asecond composite checksum from the second local management controller;and determining whether the stored VPD associated with the subset isup-to-date by comparing the stored composite checksum with the secondcomposite checksum.
 11. The management controller of claim 10, whereinthe operation further comprises, upon determining that the stored VPDassociated with the subset is not up-to-date: identifying at least onecomponent in the subset managed by the second local managementcontroller, for which VPD stored by the management controller is notup-to-date; and updating the stored VPD of the identified at least onecomponent using VPD retrieved from the second local managementcontroller.
 12. The management controller of claim 11, wherein the atleast one component is identified by comparing a stored checksum of theat least one component with a subsequently retrieved checksum of the atleast one component.
 13. The management controller of claim 8, whereineach component is uniquely identifiable by an associated identifier,wherein each identifier is immutable, and wherein each checksum isgenerated via a cyclic redundancy check (CRC) algorithm.
 14. Themanagement controller of claim 8, wherein the vital product datacomprises at least one of a serial number, a part number, a versionnumber, and a universally unique identifier (UUID), wherein themanagement controller comprises a management appliance, wherein theplurality of local management controllers includes at least a chassismanagement module and a service processor, wherein the chassismanagement module is configured to manage a first subset of theplurality of components, the first subset including at least one of amidplane, a fan, an input/output (I/O) module, a power supply, a frontpanel, a rear panel, and a media device, wherein the service processoris configured to manage a second subset of the plurality of components,the second subset including at least one of a processor, a memory, astorage device, and a daughter card.
 15. A computer-implemented method,comprising: from a first local management controller of a plurality oflocal management controllers operatively connected to a globalmanagement controller configured to manage a plurality of components,each component having associated vital product data (VPD), receiving:(i) VPD of a first component in the subset managed by the first localmanagement controller and (ii) a first checksum generated based on theVPD of the first component, wherein each local management controller isconfigured to manage a respective subset of the plurality of components;storing the VPD and the first checksum of the first component byoperation of one or more computer processors; receiving, from the firstlocal management controller, an indication that the VPD has changed,wherein the indication specifies a second checksum generated based onthe changed VPD of the first component; and responsive to theindication, determining whether the stored VPD is up-to-date bycomparing the second checksum with the stored checksum.
 16. Thecomputer-implemented method of claim 15, further comprising, upondetermining that the stored VPD is not up-to-date: retrieving, from thefirst local management controller, the changed VPD of the firstcomponent, responsive to the indication; and updating the stored VPD ofthe first component using the changed VPD.
 17. The computer-implementedmethod of claim 15, wherein the global management controller stores VPDassociated with a subset managed by a second local managementcontroller, and wherein the method further comprises: receiving a firstcomposite checksum from the second local management controller, whereinthe first composite checksum is generated based on a plurality ofchecksums, each checksum generated based on the VPD associated with arespective component of the subset managed by the second localmanagement controller; subsequent to restarting the system, receiving asecond composite checksum from the second local management controller;and determining whether the stored VPD associated with the subset isup-to-date by comparing the stored composite checksum with the secondcomposite checksum.
 18. The computer-implemented method of claim 17,further comprising, upon determining that the stored VPD associated withthe subset is not up-to-date: identifying at least one component in thesubset managed by the second local management controller, for which VPDstored by the global management controller is not up-to-date; andupdating the stored VPD of the identified at least one component usingVPD retrieved from the second local management controller.
 19. Thecomputer-implemented method of claim 18, wherein the at least onecomponent is identified by comparing a stored checksum of the at leastone component with a subsequently retrieved checksum of the at least onecomponent.
 20. The computer-implemented method of claim 15, wherein eachcomponent is uniquely identifiable by an associated identifier, whereineach identifier is immutable, and wherein each checksum is generated viaa cyclic redundancy check (CRC) algorithm.